#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QSqlDatabase> // 数据库的创建、打开等
#include <QSqlQuery>      // 数据库的增删改查操作
#include <QSqlTableModel> // 数据库表模型

#include <QDialog>          // 对话框
#include <QHBoxLayout> // 水平布局
#include <QVBoxLayout> // 垂直布局
#include <QPushButton> // 按钮
#include <QListWidget>  // 列表框
#include <QLabel>          // 标签
#include <QTime>           // 时间

#include "numberpicker.h"
#include "switchbutton.h"

/* ListWiget 项结构体 */
struct ItemObjectInfo {
    /* 闹钟开关 */
    switchbutton *switchButton;
    /* Widget 容器 */
    QWidget *widget;
    /* 水平布局 */
    QHBoxLayout *hBoxLayout;
};

class numberpicker;
class switchbutton;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:

    /* 数据库连接类 */
    QSqlDatabase sqlDatabase;
    /* 数据库操作模型 */
    QSqlTableModel *model;

    /* 时针选择器 */
    numberpicker *hourPicker;

    /* 分钟选择器 */
    numberpicker *minutePicker;

    /* 弹出选择时间对话框 */
    QDialog *alarmDialog;

    /* 水平布局 */
    QHBoxLayout *hBoxLayout[3];

    /* 垂直布局 */
    QVBoxLayout *vBoxLayout[2];

    /* 显示闹钟列表 */
    QListWidget *listWidget;

    /* 主 Widget */
    QWidget *mainWidget;

    /* 底部 Wiget */
    QWidget *bottomWidget;

    /* 弹出对话框布局窗口选择时间容器 */
    QWidget *timeWidget;

    /* 弹出对话框布局窗口按钮容器 */
    QWidget *btWidget;

    /* 添加闹钟按钮 */
    QPushButton *addAlarm;

    /* 确认按钮 */
    QPushButton *yesButton;

    /* 取消按钮 */
    QPushButton *cancelButton;


    /* listWiget 项信息存储 */
    QVector<ItemObjectInfo> itemObjectInfo;

private slots:
    /* 添加闹钟按钮被点击 */
    void addAlarmClicked();

    /* 列表被点击 */
    void listWidgetItemClicked(QListWidgetItem *);

    /* 确认按钮被点击 */
    void yesButtonClicked();

    /* 取消按钮被点击 */
    void cancelButtonClicked();

    /* 开关按钮点击 */
    void switchButtonClicked(bool);
};
#endif // MAINWINDOW_H
